#ifndef _HELP_MACROS_H_
#define _HELP_MACROS_H_


#include <boost\preprocessor.hpp>

#ifdef WIN32
#define PLATFORM_PREFIX Win
#define ARHITECT_PREFIX x86
#endif


#define PLATFORM_FILE_PART BOOST_PP_CAT( _, PLATFORM_PREFIX )
#define ARHITECT_FILE_PART BOOST_PP_CAT( _, ARHITECT_PREFIX )


#define SD_TL_EMPTY_ASSIGMENT( ClassName )\
	ClassName& operator =( const ClassName& );

#define SD_TL_EMPTY_DEF_MEMBERS( ClassName )\
	SD_TL_EMPTY_ASSIGMENT( ClassName )      \
	ClassName();							\
	ClassName( const ClassName& );   


#define SD_TL_PLATFORM_IMPL_INC( PATH, NAME )\
	BOOST_PP_STRINGIZE( BOOST_PP_CAT( PATH/, BOOST_PP_CAT( BOOST_PP_CAT( BOOST_PP_CAT( BOOST_PP_CAT( BOOST_PP_CAT( impl/, PLATFORM_PREFIX), BOOST_PP_CAT( /, NAME ) ), Impl ), PLATFORM_FILE_PART ), .h ) ) )

#define SD_TL_PLATFORM_ARH_INC( PATH, NAME )\
	BOOST_PP_STRINGIZE( BOOST_PP_CAT( PATH/, BOOST_PP_CAT( BOOST_PP_CAT( BOOST_PP_CAT( BOOST_PP_CAT( BOOST_PP_CAT( ARHITECT_PREFIX, BOOST_PP_CAT( /, NAME ) ), Impl ), PLATFORM_FILE_PART ), ARHITECT_FILE_PART ), .h ) ) )



#endif//_HELP_MACROS_H_